package com.yuandian.management.mapper;

import com.yuandian.api.management.po.OptionParams;
import com.yuandian.api.management.vo.OptionVo;
import com.yuandian.management.vo.BusinessServerResourceParams;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 说明：选项mapper
 * @author EDY
 * @Date 2023/2/6 11:57
 */
@Mapper
public interface OptionMapper {

	/**
	 * 查询系统选项
	 * @param params 选项请求参数
	 * @return 选项集
	 */
	List<OptionVo> system(@Param("params") OptionParams params);

	/**
	 * 查询业务选项
	 * @param params 选项请求参数
	 * @return 选项集
	 */
	List<OptionVo> business(@Param("params") OptionParams params);

	/**
	 * 查询步骤选项
	 *
	 * @param params 选项请求参数
	 * @return 统一响应
	 */
	List<OptionVo> step(@Param("params") OptionParams params);

	/**
	 * 查询网端选项
	 *
	 * @param params 选项请求参数
	 * @return 统一响应
	 */
	List<OptionVo> segment(@Param("params") OptionParams params);

	/**
	 * 告警模板
	 *
	 * @return 统一响应
	 * @param type
	 */
    List<Map<String, Object>> alarmTemplate(@Param("type") int type);


	/**
	 * 告警指标
	 *
	 * @return 统一响应
	 * @param type
	 * @param category
	 */
	List<OptionVo> alarmIndicators(@Param("type") Integer type, @Param("category") String category);


	/**
	 * 查询城市地市(区域)
	 *
	 * @return 统一响应
	 * @param provinceCode
	 */
    List<OptionVo> getCityArea(@Param("provinceCode") String provinceCode);

	/**
	 * 查询省份
	 *
	 * @return 统一响应
	 */
	List<OptionVo> province();

	/**
	 *	查询告警类型
	 * @return 统一响应
	 * @param category
	 */
	List<OptionVo> queryBaseIndicatorsList(@Param("params") OptionParams category);

	/**
	 * 数据中心
	 *
	 * @return 统一响应
	 */
    List<OptionVo> dataCenter();


	/**
	 * 数据中心下的地市
	 *
	 * @param dataCenterId
	 * @return 统一响应
	 */
	List<OptionVo> getCityAreaByDataCenterId(@Param("dataCenterId") Integer dataCenterId);


	/**
	 * 原始数据规则名称
	 *
	 * @return 统一响应
	 */
    List<OptionVo> queryRuleNameSelect();

	/**
	 * 获取协议名称
	 *
	 * @return
	 */
    List<OptionVo> protocol();

	/**
	 * 指标单位
	 *
	 * @return 统一响应
	 */
	List<OptionVo> indicatorUnit();


	/**
	 * 通过系统id查询端类型
	 *
	 * @param systemId
	 */
    List<OptionVo> getSegmentTypeNameBySegmentId(@Param("systemId") Integer systemId);



	/**
	 * 查询专属指标同步网端下拉项
	 * @param params 业务服务资源接口请求对象
	 * @return 搜索项vo对象集合
	 */
	List<OptionVo> queryIndicatorSyncSegmentOptions(@Param("params") BusinessServerResourceParams params);

	/**
	 * 查询专属指标同步系统下拉项
	 * @param params 业务服务资源接口请求对象
	 * @return 搜索项vo对象集合
	 */
	List<OptionVo> queryIndicatorSyncSystemOptions(@Param("params") BusinessServerResourceParams params);

	/**
	 * 查询专属指标同步业务下拉项
	 * @param params 业务服务资源接口请求对象
	 * @return 搜索项vo对象集合
	 */
	List<OptionVo> queryIndicatorSyncBusinessOptions(@Param("params") BusinessServerResourceParams params);
}
